﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#include"BST.h"

class A
{
public:
	A()
		:m_iVal(0)
	{
		test();
	}
	virtual void func()
	{
		cout << m_iVal << " ";
	}
	void test()
	{
		func();
	}
public:
	int m_iVal;
};

class B :public A
{
public:
	B() {
		test();
	}
	virtual void func()
	{
		++m_iVal;
		cout << m_iVal << " ";
	}
};


int main(int argc, char* argv[])

{
	A* p = new B;
	p->test();
	return 0;
}

//class A
//{
//	virtual void func()
//	{
//		cout << "A::func" << endl;
//	}
//};
//class A
//
//{
//
//public:
//
//	virtual void f()
//
//	{
//
//		cout << "A::f()" << endl;
//
//	}
//
//};


/*
class B : public A

{

private:

	virtual void f()

	{

		cout << "B::f()" << endl;

	}

};

int main()
{
	A* pa = (A*)new B;

	pa->f();*/
	//A a;
	//A a2;
	//A* p;
	/*zpl::BSTree<int> t1;
	t1.Insert(1);
	t1.Insert(4);
	t1.Insert(7);
	t1.Insert(3);
	t1.Insert(9);
	t1.Insert(11);
	t1.Inorder();
	zpl::BSTree<int> t2(t1);
	t2.Inorder();
	zpl::BSTree<int> t3;
	t3.Inorder();
	t3 = t1;
	t3.Inorder();
	t3.erase(7);
	t3.Inorder();
	auto ret = t1.Find(7);
	if (ret)
		cout << ret->_key<< " " << endl;
	t3.Inorder();*/
	//zpl::testBSTree();
	//return 0;
//}